package com.biyao.controller.config.api;


import com.biyao.controller.config.Constants;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.ArrayList;
import java.util.List;

/**
 * //@Profile("!prod")
 * @author song
 */
@Configuration
@EnableSwagger2
public class SwaggerConfig {

	private static final String BASE_PACKAGE = Constants.BASE_PACKAGE_NAME;

	@Bean
	public Docket userApi() {
        ParameterBuilder tokenPar = new ParameterBuilder();
        List<Parameter> pars = new ArrayList<>();
        tokenPar.name("Authorization")
                .description("令牌")
                .modelRef(new ModelRef("string"))
                .parameterType("header").required(false).build();
        pars.add(tokenPar.build());

        return new Docket(DocumentationType.SWAGGER_2).groupName("客户端服务").apiInfo(apiInfo()).select()
				.apis(RequestHandlerSelectors.basePackage(BASE_PACKAGE)).paths(PathSelectors.any()).build()
                .globalOperationParameters(pars)  ;
	}
	/**
	 * 预览地址:swagger-ui.html
	 */
	private ApiInfo apiInfo() {
		return new ApiInfoBuilder().title("客户端服务API文档").termsOfServiceUrl("#")
				.contact(new Contact("API服务中心 ", "#", "#")).version("1.1").build();
	}

	public boolean isSwagger(String url) {
		final String swagger = "swagger";
		final String apiDocs = "api-docs";
		if (url.indexOf(swagger) > 0 || url.indexOf(apiDocs) > 0) {
			return true;
		}
		return false;
	}
}
